<?php

class ProductosController extends AppController
{

    public $uses = array(
        'Producto',
        'Categoria',
        'Insumo',
        'InsumosProducto',
        'Clase');
    public $layout = 'pizza';

    public function beforeFilter()
    {
        parent::beforeFilter();
        $this->Auth->allow('*');
    }

    public function index()
    {
        $productos = $this->Producto->find('all');
        $this->set(compact('productos'));
        // debug($productos);
    }

    public function insertar()
    {
        if (!empty($this->data))
        {
            $this->Producto->create();
            if ($this->Producto->save($this->data))
            {
                $this->Session->setFlash('Producto Registrado con Exito...!!!');
                $this->redirect(array('action' => 'index'));
            } else
            {
                $this->Session->setFlash('No se puedo registrar el Producto');
            }
        }
        $categorias = $this->Clase->find('list', array('fields' =>
            'Clase.nombre'));

        $this->set(compact('categorias'));
        // debug($dinsumo);exit;
    }

    function editar($id = null)
    {
        $this->Producto->id = $id;
        if (!$id)
        {
            $this->Session->setFlash('No Existe el tipo de Producto');
            $this->redirect(array('action' => 'index'));
        }
        if (empty($this->request->data))
        {
            $this->request->data = $this->Producto->read();
        } else
        {
            if ($this->Producto->save($this->data))
            {
                $this->Session->setFlash('Se Guardo Correctamente el Producto');
                $this->redirect(array('action' => 'index'));
            } else
            {
                $this->Session->setFlash('Error al Guardar el Producto');
            }
        }
        $categorias = $this->Clase->find('list', array('fields' =>
            'Clase.nombre'));
        $this->set(compact('categorias'));
    }

    function eliminar($id = null)
    {
        $this->Producto->id = $id;
        $this->data = $this->Producto->read();
        if (!$id)
        {
            $this->Session->setFlash('No existe el Producto a eliminar');
            $this->redirect(array('action' => 'index'));
        } else
        {
            if ($this->Producto->delete($id))
            {
                $this->Session->setFlash('Se elimino el Producto ' . $this->data['Producto']['nombre']);
                $this->redirect(array('action' => 'index'));
            } else
            {
                $this->Session->setFlash('Error al eliminar');
            }
        }
    }

    public function porciones($idProducto = null)
    {
        $producto = $this->Producto->find('first', array(
            'recursive' => -1,
            'conditions' => array('Producto.id' => $idProducto)
                ));
        $insumos = $this->InsumosProducto->find('all', array('conditions' => array('InsumosProducto.producto_id' => $idProducto)));
        if (!empty($this->request->data))
        {
            //debug($this->request->data);exit;
            
        }
        $this->set(compact('producto', 'insumos'));
    }

    public function ajaxinsertar($idProducto = null)
    {

        $this->layout = 'ajax';
        if (!empty($this->request->data))
        {

            if ($this->InsumosProducto->save($this->request->data))
            {
                $this->Session->setFlash('Se registraron los datos de insumo del producto', 'alerts/bueno');
                $this->redirect(array('action' => 'porciones', $this->request->data['InsumosProducto']['producto_id']));
            } else
            {
                $this->Session->setFlash('Error al editar los datos de insumo del producto');
                $this->redirect(array('action' => 'porciones', $this->request->data['InsumosProducto']['producto_id']));
            }
        }
        $producto = $this->Producto->find('first', array(
            'recursive' => -1,
            'conditions' => array('Producto.id' => $idProducto)
                ));

        $insumosProducto = $this->InsumosProducto->find('list', array(
            'conditions' => array(
                'InsumosProducto.producto_id' => $idProducto),
            'fields' => array('InsumosProducto.insumo_id')
                ));


        if (!empty($insumosProducto))
        {

            $insumos = $this->Insumo->find('all', array(
                'conditions' => array('NOT' => array('Insumo.id' => $insumosProducto)),
                'fields' => array('Insumo.id', 'Insumo.cantidadtotal', 'Insumo.nombre'),
                'recursive' => -1
                    ));
        } else
        {

            $insumos = $this->Insumo->find('all', array(
                'fields' => array('Insumo.id', 'Insumo.cantidadtotal', 'Insumo.nombre'),
                'recursive' => -1
                    ));
        }
        $this->set(compact('producto', 'insumos'));
    }

    public function ajaxeditar($id = null)
    {

        $this->layout = 'ajax';

        $datosInsumoProducto = $this->InsumosProducto->find('first', array(
            'recursive' => 0,
            'conditions' => array('InsumosProducto.id' => $id)
                ));
        //debug($datosInsumoProducto);
        $idProducto = $datosInsumoProducto['Producto']['id'];

        if ($id)
        {            
            if ($this->request->data)
            {
                $cantidad = $this->request->data['InsumosProducto']['cantidad'];
                $precio = $this->request->data['InsumosProducto']['descuento'];
                $data = array('id' => $id, 'cantidad' => $cantidad, 'descuento'=>$precio);
                if ($this->InsumosProducto->save($data))
                {
                    // Set a session flash message and redirect.
                    $this->Session->setFlash('Guardado Correctamente...!!!', 'alerts/bueno');
                    $this->redirect(array('controller' => 'Productos', 'action' => 'porciones', $idProducto));
                }
            }else{
                
            }
        } else
        {
            
        }
        $this->set(compact('datosInsumoProducto'));       
    }

}

?>
